package manager.modulo.ordemservico.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import manager.auxiliares.Configurations;
import manager.interfaces.InterfaceDao;
import manager.principal.fonte.JanelaLogin;

/**
 * Esta classe será utilizada para cadastra a entidade user no banco de dados
 *
 * @author Thiago
 */
public class ProcedimentoEpiDao implements InterfaceDao {

    private int idProcedimento;
    private int idEpi;

    /**
     * Inicializando as variáveis
     */
    public ProcedimentoEpiDao() {
        idProcedimento = 0;
        idEpi = 0;
    }

    public void buscar(int id) {
        throw new UnsupportedOperationException("Not support yet.");
    }

    public static LinkedList<Integer> buscarListaIdEpiPorProcedimento(int idProcedimento) throws SQLException {
        LinkedList<Integer> result = new LinkedList<Integer>();
        String sql = "";
        sql = "SELECT id_epi FROM pro_epi WHERE id_procedimento = ? ";
        PreparedStatement preparedStatement = JanelaLogin.getConnection().prepareStatement(sql);
        preparedStatement.setInt(1, idProcedimento);
        ResultSet resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) {
            result.add(resultSet.getInt(1));
        }
        return result;
    }

    /**
     * Insere um usuário no banco
     */
    public void inserir() throws SQLException {
        String sql = "INSERT INTO pro_epi (id_procedimento,id_epi) VALUES (?,?)";
        PreparedStatement preparedStatement = JanelaLogin.getConnection().prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);

        preparedStatement.setInt(1, idProcedimento);
        preparedStatement.setInt(2, idEpi);
        preparedStatement.executeUpdate();

        //Recebendo o novo id gerado
        ResultSet resultSet = preparedStatement.getGeneratedKeys();
        while (resultSet.next()) {
            idProcedimento = resultSet.getInt(1);
        }

        preparedStatement.close();
        resultSet.close();
    }

    /**
     * Atualiza o usuário no banco
     */
    public void atualizar() throws SQLException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void deletar() throws SQLException {
        String sql = "DELETE FROM pro_epi WHERE id_procedimento = ?";
        PreparedStatement preparedStatement = JanelaLogin.getConnection().prepareStatement(sql);
        preparedStatement.setInt(1, idProcedimento);
        preparedStatement.executeUpdate();
        preparedStatement.close();
    }

    public int getIdProcedimento() {
        return idProcedimento;
    }

    public void setIdProcedimento(int idProcedimento) {
        this.idProcedimento = idProcedimento;
    }

    public int getIdEpi() {
        return idEpi;
    }

    public void setIdEpi(int idEpi) {
        this.idEpi = idEpi;
    }

    public LinkedList<String> buscar(String opcao, String buscado, boolean limite) throws SQLException {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
